//#include "String.h"
//#include <ctype.h>
//
////String::String()
////{
////	this->m_str = new char;
////	m_str[0] = '\0';
////}
////String::String(const char* str)
////{
////	int len = strlen(str) + 1;
////	this->m_str = new char[len];
////	strcpy_s(this->m_str, len, str);
////}
////String::String(const String& str)
////{
////	int len = strlen(str.m_str)+1;
////	this->m_str = new char[len];
////	strcpy_s(this->m_str, len, str.m_str);
////}
////String::~String()
////{
////	if (this->m_str)
////	{
////		delete[] this->m_str;
////		this->m_str = NULL;
////	}
////}
////String& String::operator=(const String& str)
////{
////	if (this == &str)return *this;
////	if (this->m_str)
////	{
////		delete[] this->m_str;
////		this->m_str = NULL;
////	}
////	int len = strlen(str.m_str) + 1;
////	this->m_str = new char[len];
////	strcpy_s(this->m_str, len, str.m_str);
////	return *this;
////}
////
////String String::operator+(const String& str)const
////{
////	String result;
////	int len = strlen(this->m_str) + strlen(str.m_str) + 1;
////	result.m_str = new char[len];
////	strcpy_s(result.m_str, len, this->m_str);
////	strcat(result.m_str, str.m_str);
////	return result;
////}
////bool String::operator==(const String& str)const
////{
////	return strcmp(this->m_str, str.m_str) == 0;
////}
////
////void String::stringup()
////{
////	int len = strlen(this->m_str);
////	for (int i = 0; i < len; i++)
////	{
////		this->m_str[i] = toupper(m_str[i]);
////	}
////}
////void String::stringlow()
////{
////	int len = strlen(this->m_str);
////	for (int i = 0; i < len; i++)
////	{
////		this->m_str[i] = tolower(m_str[i]);
////	}
////}
////int String::has(char c)const
////{
////	int len = strlen(this->m_str);
////	int count = 0;
////	for (int i = 0; i < len; i++)
////	{
////		if (this->m_str[i] == c)
////		{
////			count++;
////		}
////	}
////	return count;
////}
////
////
////ostream& operator<<(ostream& os, const String& str)
////{
////	os << str.m_str;
////	return os;
////}
////istream& operator>>(istream& is, String& str)
////{
////	char temp[80];
////	is.get(temp, 80);
////	if (is)
////	{
////		str = temp;
////	}
////	while (is&&is.get()!='\n')
////	{
////		continue;
////	}
////	return is;
////}
////String operator+(const char* str1, const String& str2)
////{
////	String result;
////	int len = strlen(str1) + strlen(str2.m_str)+1;
////	result.m_str = new char[len];
////	strcpy_s(result.m_str, len, str1);
////	strcat(result.m_str, str2.m_str);
////	return result;
////}
//
//
//
//String::String(const char* s)
//{
//	len = strlen(s);
//	str = new char[len + 1];
//	strcpy(str, s);
//	num_strings++;
//}
//String::String()
//{
//	len = 4;
//	str = new char[1];
//	str[0] = '\0';
//	num_strings++;
//}
//String::String(const String&st)
//{
//	num_strings++;
//	len = st.len;
//	str = new char[len + 1];
//	strcpy(str, st.str);
//}
//String::~String()
//{
//	--num_strings;
//	delete[] str;
//}
//
//String& String::operator=(const String&st)
//{
//	if (this == &st)return *this;
//	delete[] str;
//	len = st.len;
//	str = new char[len + 1];
//	strcpy(str, st.str);
//	return *this;
//}
//String& String::operator=(const char*s)
//{
//	delete[] str;
//	len = strlen(s);
//	str = new char[len + 1];
//	strcpy(str, s);
//	return *this;
//}
//char& String::operator[](int i)
//{
//	return str[i];
//}
//const char& String::operator[](int i)const
//{
//	return str[i];
//}
//String operator+(const char* st, const String& s)
//{
//	String result;
//	result.len = strlen(st) + s.len;
//	result.str = new char[result.len + 1];
//	strcpy(result.str, st);
//	strcat(result.str, s.str);
//	return result;
//}
//String operator+(const String& s, const String& st)
//{
//	String result;
//	result.len = s.len + st.len;
//	result.str = new char[result.len + 1];
//	strcpy(result.str, s.str);
//	strcat(result.str, st.str);
//	return result;
//}
//
//void String::stringlow()
//{
//	for (int i = 0; i < len; i++)
//	{
//		str[i] = tolower(str[i]);
//	}
//}
//void String::stringup()
//{
//	for (int i = 0; i < len; i++)
//	{
//		str[i] = toupper(str[i]);
//	}
//}
//int String::has(char c)const
//{
//	int result = 0;
//	for (int i = 0; i < len; i++)
//	{
//		if (str[i] == c)result++;
//	}
//	return result;
//}
//
//
//bool operator<(const String& st, const String& st2)
//{
//	return (strcmp(st.str, st2.str) < 0);
//}
//bool operator>(const String& st, const String& st2)
//{
//	return st2 < st;
//}
//bool operator==(const String& st, const String& st2)
//{
//	return (strcmp(st.str, st2.str) == 0);
//}
//ostream& operator<<(ostream& os, const String& st)
//{
//	os << st.str;
//	return os;
//}
//istream& operator>>(istream& is, String& st)
//{
//	char temp[String::CINLIM];
//	is.get(temp, String::CINLIM);
//	if (is)
//	{
//		st = temp;
//	}
//	while (is && is.get() != '\n')
//	{
//		continue;
//	}
//	return is;
//}
//
//int String::HowMany()
//{
//	return num_strings;
//}